<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        // 封装一个能把扁平数组转成树型数组的函数
        // 现在函数的作用：得到一个指定id的部门的的子部门
        function transListToTreeData(arr, pid){
            // arr 测试数组  pid: 0
            const arrNew = []
            // 核心逻辑
            arr.forEach(item => {
                if(item.pid === pid){
                    arrNew.push(item)
                    // 如果当前部门有子部门，还需要给他添加children属性
                    // 1. 得到当前部门item下的子部门
                    const children =  transListToTreeData(arr, item.id)
                    // console.log(children)
                    // 2. 判断子部门的数组长度是否不为0（代表有子部门）
                    if(children.length){
                        // 3. 给有子部门的部门，添加 children属性 指向其子部门
                        item.children = children
                    }
                }
            });
            return arrNew
        }

        var arr = [
            { id: 1, name: '总裁办', pid: 0 },
            { id: 11, name: '秘书处', pid: 1 },
            { id: 2, name: 'IT部', pid: 0 }
        ]
        // const arrNew =  transListToTreeData(arr, 2)
        // console.log(arrNew)  // 树型数组 []

        // const arrNew1 =  transListToTreeData(arr, 11)
        // console.log(arrNew1)  // 树型数组 []

        // const arrNew2 =  transListToTreeData(arr, 1)
        // console.log(arrNew2)  // 树型数组 [{ id: 11, name: '秘书处', pid: 1 }]

        const arrNew3 =  transListToTreeData(arr, 0)
        console.log(arrNew3)  // 树型数组 













        // 测试代码：
        // // 约定了 一级节点没有父亲 pid为0      二级节点的 pid为他所有一级节点的id
        // var arr = [
        //     { id: 1, name: '总裁办', pid: 0 },
        //     { id: 11, name: '秘书处', pid: 1 },
        //     { id: 2, name: 'IT部', pid: 0 }
        // ]
        // // - 总裁办
        // //     - 秘书处
        // // - IT部
        // const arrNew =  transListToTreeData(arr, 0)
        // console.log(arrNew)  // 树型数组
        // [
        //     { id: 1, name: '总裁办', pid: 0 },
        //     { id: 2, name: 'IT部', pid: 0 }
        // ]

        // [
        //     { id: 1, name: '总裁办', pid: 0, children: [{ id: 11, name: '秘书处', pid: 1 }] },
        //     { id: 2, name: 'IT部', pid: 0 }
        // ]

        // const arrNew1 =  transListToTreeData(arr, 1)
        // console.log(arrNew1)  // 树型数组  [{ id: 11, name: '秘书处', pid: 1 }]
        // const arrNew2 =  transListToTreeData(arr, 2)
        // console.log(arrNew2)  // 树型数组  []
   



    </script>
</body>
</html>